/*
* vuex的核心管理对象模块:store
* */
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// 状态对象
const state = { // 初始化状态
  informCount: window.sessionStorage.getItem('count') ? parseInt(window.sessionStorage.getItem('count')) : 0,
  loginVisable: false
}
// 更新state函数的对象
const mutations = {
  setCount (state, { res }) {
    state.informCount = res
  },
  setLoginVisable (state) {
    state.loginVisable = true
  },
  hideLoginVisable (state) {
    state.loginVisable = false
  }
}
// 多个对应事件回调函数的对象
const actions = {
  informInfo ({ commit }, that) {
    if (!window.localStorage.getItem('lhamster_identity_info')) {
      commit('setCount', 0)
    } else {
      // 获取当前用户所有通知
      that.$http.get('informCount').then(res => {
        res = res.data
        window.sessionStorage.setItem('count', res)
        commit('setCount', { res })
      })
    }
  },
  showLogin ({ commit }) {
    commit('setLoginVisable')
  },
  hideLogin ({ commit }) {
    commit('hideLoginVisable')
  }
}
// 多个getter计算属性函数的对象
const getters = {}

export default new Vuex.Store({
  state, // 状态
  mutations, // 包含多个更新state函数的对象
  actions, // 包含多个对应事件回调函数的对象
  getters // 包含多个getter计算属性函数的对象
})
